package main

import (
	"fmt"
)

func getUser() (string, int) { //返回多个值
	return "xiaoluo", 12
}

func main() {
	// var 定义类型
	var a string   //初始化参数 需要追加类型
	fmt.Println(a) //变量声明没赋值 为空
	a = "hello"
	fmt.Println(a)

	var b int = 100 //如果不写int 也会类型推导出 b 为 int类型
	fmt.Println(b)

	var a1, a2 string // 同时声明多个类型
	a1 = "hello"
	a2 = "world"
	fmt.Println(a1, a2)

	var (
		name    string
		age     int
		hobbies []string
	) // 声明多个变量  类型不同
	name = "test"
	age = 10
	hobbies = []string{"coding", "eating", "sleeping"}
	fmt.Println(name, age, hobbies)

	var (
		name2    string   = "xiaoluo"
		age2     int      = 21
		hobbies2 []string = []string{"sleep", "code", "moive"}
	) //声明并赋值
	fmt.Println(name2, age2, hobbies2)

	//  短变量声明  := 创建变量c并赋值  仅适用于声明局部变量，不能用做全局
	c := "test"
	fmt.Println(c)

	d1, d2, d3 := 11, 22, "33" //短变量声明多个变量赋值
	fmt.Printf("d1类型%T,d2类型%T,d3类型%T", d1, d2, d3)

	var username, _ = getUser() //只需要username，_下划线为匿名变量，不会分配内存，不存在重复声明问题
	var _, ages = getUser()
	fmt.Println(username, ages)
}
